package com.hotelManager.www.serviceInterface;

import com.hotelManager.www.po.Room;
import com.hotelManager.www.po.RoomType;

import java.math.BigDecimal;
import java.util.List;

/**
 * 房间服务接口
 */
public interface RoomServiceInterface extends BaseService<Room> {


    List<Room> getRoomsByShopId(int shopId);

    /**
     * 更新房间价格
     * @param roomId 房间ID
     * @param newPrice 新价格
     * @return 是否更新成功
     */
    boolean updateRoomPrice(int roomId, BigDecimal newPrice);
    
    /**
     * 更新房间库存
     * @param roomId 房间ID
     * @param newStock 新库存
     * @return 是否更新成功
     */
    boolean updateRoomStock(int roomId, int newStock);
    
    /**
     * 检查房间是否可用
     * @param roomId 房间ID
     * @return 是否可用
     */
    boolean isRoomAvailable(int roomId);
    
    /**
     * 获取房间剩余数量
     * @param roomId 房间ID
     * @return 剩余数量
     */
    int getRoomStock(int roomId);

    List<Room> searchRoomsByType(int shopId, String roomType);

    /**
     * 检查房间价格是否有效
     * @param price 价格
     * @return 是否有效
     */
    boolean isValidPrice(BigDecimal price);
    
    /**
     * 检查房间库存是否有效
     * @param stock 库存
     * @return 是否有效
     */
    boolean isValidStock(int stock);
    
    /**
     * 根据店铺ID获取房型列表
     */
    List<RoomType> getRoomTypesByShopId(int shopId);
    
    /**
     * 根据房型ID获取房间列表
     */
    List<Room> getRoomsByRoomTypeId(int roomTypeId);

    /**
     * 根据房间号查找房间
     * @param roomCode 房间号
     * @return 房间对象，如果未找到返回null
     */
    Room findByRoomCode(String roomCode);
} 